home *** CD-ROM | disk | FTP | other *** search
-
- -- -----------------------------------------------------------------
- -- Init
- -- -----------------------------------------------------------------
- local function prog_init()
- initModels()
- sound_playMusic("music/rybky03.ogg")
- local pokus = getRestartCount()
-
-
- -- -------------------------------------------------------------
- local function prog_init_room()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- room.uvod = 0
- room.sas = 0
- room.kuk = 0
- room.okoralech = 0
- room.obarvach = 0
- room.neprojedes = 0
- room.mohlabys = 0
-
- return function()
- if isReady(small) and isReady(big) and no_dialog() then
- if room.uvod == 0 then
- room.uvod = 1
- switch(random(1)){
- [0] = function()
- addm(20 + random(30), "ncp-m-tesno0")
- end,
- [1] = function()
- addm(20 + random(30), "ncp-m-tesno1")
- end,
- }
- if random(100) < 30 then
- addv(random(8), "ncp-v-dostala")
- end
- elseif look_at(small, sasanka) and dist(small, sasanka) < 3 and room.sas == 0 and random(100) < 20 then
- addv(random(5), "ncp-v-sasanka")
- room.sas = 1
- elseif look_at(small, konik) and konik.afaze == 3 and dist(small, konik) < 4 and room.kuk == 0 then
- addm(random(5), "ncp-m-nekoukej")
- room.kuk = 1
- elseif (koral1.dir ~= dir_no or koral2.dir ~= dir_no or koral3.dir ~= dir_no or koral0.dir ~= dir_no) and room.okoralech == 0 and random(100) < 2 then
- room.okoralech = 1
- if big.dir ~= dir_no then
- addv(0, "ncp-v-mekky")
- else
- switch(random(5)){
- [4] = function()
- addm(0, "ncp-m-komari")
- addv(random(3), "ncp-v-ceho")
- addm(random(3), "ncp-m-koraly")
- end,
- default = function()
- addm(0, "ncp-m-tvrdy")
- end,
- }
- end
- elseif big.X == 4 and big.Y == 29 and room.neprojedes == 0 and random(100) < 10 then
- addv(random(3), "ncp-v-neprojedu")
- room.neprojedes = 1
- elseif room.obarvach == 0 and random(10000) < 5 then
- room.obarvach = 1
- addm(random(10), "ncp-m-barvy")
- elseif valec.X == 3 and valec.Y == 34 and room.mohlabys == 0 then
- room.mohlabys = 1
- addv(random(3), "ncp-v-tak")
- if random(100) < 80 then
- addm(random(10), "ncp-m-muzes")
- end
- end
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_sasanka()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- sasanka.cinnost = 0
- sasanka.noha = 0
- sasanka.kvet = 1
- sasanka.akcnost = 1
-
- return function()
- if sasanka.cinnost ~= 5 and (dist(small, sasanka) < 3 or dist(big, sasanka) < 3) then
- sasanka.cinnost = 5
- sasanka.counts = random(10) + 15
- sasanka.akcnost = 1
- end
- if sasanka.cinnost == 0 then
- sasanka.cinnost = random(4) + 1
- sasanka.fazec = 0
- sasanka.akcnost = 2 + random(2)
- end
- if math.mod(game_getCycles(), sasanka.akcnost) == 0 then
- cinnost_table = {
- [1] = function()
- sasanka.noha = math.floor(sasanka.fazec / 4)
- if sasanka.cinnost == 1 then
- sasanka.kvet = math.mod(sasanka.fazec, 2) + 1
- sasanka.akcnost = 2
- if sasanka.kvet == 2 then
- sasanka:talk("ncp-x-tup", VOLUME_FULL)
- end
- else
- sasanka.kvet = math.mod(sasanka.fazec, 2) * 2 + 1
- sasanka.akcnost = 3
- end
- sasanka.fazec = sasanka.fazec + 1
- if sasanka.fazec == 8 then
- if random(100) < 30 then
- sasanka.cinnost = 0
- else
- sasanka.fazec = 0
- end
- end
- end,
- [3] = function()
- switch(sasanka.fazec){
- [0] = function()
- sasanka.counts = random(10) + 7
- sasanka.fazec = sasanka.fazec + 1
- sasanka.kvet = 1
- end,
- [1] = function()
- sasanka.noha = 1 - sasanka.noha
- sasanka.counts = sasanka.counts - 1
- if sasanka.counts == 0 then
- sasanka.fazec = sasanka.fazec + 1
- end
- end,
- [2] = function()
- if sasanka.cinnost == 3 then
- sasanka.kvet = 0
- sasanka.counts = random(8) + 5
- else
- sasanka.kvet = 3
- sasanka.counts = random(6) + 3
- end
- sasanka.fazec = sasanka.fazec + 1
- end,
- [3] = function()
- sasanka.counts = sasanka.counts - 1
- if sasanka.counts == 0 then
- if random(100) < 30 then
- sasanka.cinnost = 0
- else
- sasanka.fazec = 0
- end
- end
- end,
- }
- end,
- [5] = function()
- sasanka.akcnost = 2
- sasanka.counts = sasanka.counts - 1
- switch(sasanka.counts){
- [0] = function()
- sasanka.cinnost = 0
- end,
- [1] = function()
- sasanka.kvet = 1
- sasanka.noha = 1 - sasanka.noha
- end,
- default = function()
- sasanka.kvet = 0
- end,
- }
- end,
- }
-
- cinnost_table[2] = cinnost_table[1]
- cinnost_table[4] = cinnost_table[3]
- switch(sasanka.cinnost)(cinnost_table)
- end
- sasanka.afaze = sasanka.noha * 4 + sasanka.kvet
- sasanka:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_snek()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- snek.stav = 0
-
- return function()
- switch(snek.stav){
- [0] = function()
- if snek.dir ~= dir_no then
- snek.stav = 1
- end
- end,
- [1] = function()
- snek.afaze = 3
- snek.stav = snek.stav + 1
- end,
- [2] = function()
- snek.afaze = 1
- snek.stav = snek.stav + 1
- end,
- [3] = function()
- snek.afaze = 2
- if snek.dir == dir_no then
- snek.stav = 4
- snek.count = 20
- end
- end,
- [4] = function()
- snek.count = snek.count - 1
- if snek.count == 0 then
- snek.stav = 5
- snek.count = 5
- end
- if snek.dir ~= dir_no then
- snek.stav = 2
- end
- end,
- [5] = function()
- snek.afaze = 1
- snek.count = snek.count - 1
- if snek.count == 0 then
- snek.afaze = 0
- snek.stav = 0
- end
- if snek.dir ~= dir_no then
- snek.stav = 1
- end
- end,
- }
- snek:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_small()
- local small_boring = 0
- local small_smile = 4
- local xicht = 0
-
- return function()
- if small:getAction() == "rest" then
- small_boring = small_boring + 1
- else
- small_boring = 0
- end
- if small_boring >= 15 and small_boring < 40 and look_at(small, konik) and ydist(small, konik) == 0 and xdist(small, konik) < 3 then
- if xicht ~= small_smile then
- xicht = small_smile
- konik.stav = 7
- end
- else
- xicht = 0
- end
- if xicht ~= 0 then
- small:useSpecialAnim("head_all", xicht)
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_big()
- local big_boring = 0
- local xicht = 0
- return function()
- if big:getAction() == "rest" then
- big_boring = big_boring + 1
- else
- big_boring = 0
- end
- if big_boring >= 15 and big_boring < 40 and look_at(big, konik) and ydist(big, konik) == 0 and xdist(big, konik) < 3 then
- if xicht ~= 6 then
- xicht = 6
- konik.stav = 7
- end
- else
- xicht = 0
- end
- if xicht ~= 0 then
- big:useSpecialAnim("head_all", xicht)
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_konik()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- konik.stav = 0
- konik.mrkani = 0
-
- return function()
- if konik.stav ~= 2 and konik.dir == dir_down then
- konik:talk("ncp-x-ihaha", VOLUME_FULL)
- end
- if konik.dir == dir_down or elko.dir == dir_down then
- konik.stav = 2
- elseif konik.stav == 2 then
- konik.stav = 0
- end
- switch(konik.stav){
- [0] = function()
- pom1 = 15
- if look_at(small, konik) and math.abs(xdist(small, konik)) <= 3 and math.abs(ydist(small, konik)) <= 1 then
- pom1 = 0
- end
- if look_at(big, konik) and math.abs(xdist(big, konik)) <= 3 and math.abs(ydist(big, konik)) <= 1 then
- pom1 = 0
- end
- if random(100) < pom1 then
- konik.stav = 1
- konik.mrkani = 0
- end
- konik.afaze = 0
- end,
- [2] = function()
- konik.afaze = 3
- end,
- [6] = function()
- konik.stav = 10
- konik.mrkani = 10
- end,
- [7] = function()
- konik.mrkani = 10
- konik.stav = 8
- end,
- [8] = function()
- konik.mrkani = konik.mrkani - 1
- if konik.mrkani == 0 then
- konik.stav = 3
- end
- end,
- [10] = function()
- if konik.mrkani > 0 then
- konik.mrkani = konik.mrkani - 1
- else
- konik.stav = 11
- end
- end,
- [11] = function()
- konik.afaze = 3
- konik.mrkani = random(10) + 10
- konik.stav = konik.stav + 1
- end,
- [12] = function()
- if konik.mrkani > 0 then
- konik.mrkani = konik.mrkani - 1
- else
- konik.afaze = 0
- konik.stav = 0
- end
- end,
- default = function()
- if isIn(konik.stav, {1, 3, 4, 5}) then
- switch(konik.mrkani){
- [0] = function()
- konik.afaze = 2
- end,
- [1] = function()
- konik.afaze = 1
- konik:talk("ncp-x-tik", VOLUME_FULL)
- end,
- [2] = function()
- konik.afaze = 2
- end,
- [3] = function()
- konik.afaze = 0
- konik.mrkani = -1
- if konik.stav == 1 then
- konik.stav = 0
- else
- konik.stav = konik.stav + 1
- end
- end,
- }
- konik.mrkani = konik.mrkani + 1
- end
- end,
- }
- konik:updateAnim()
- end
- end
-
- -- --------------------
- local update_table = {}
- local subinit
- subinit = prog_init_room()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_sasanka()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_snek()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_small()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_big()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_konik()
- if subinit then
- table.insert(update_table, subinit)
- end
- return update_table
- end
- local update_table = prog_init()
-
-
- -- -----------------------------------------------------------------
- -- Update
- -- -----------------------------------------------------------------
- function prog_update()
- for key, subupdate in pairs(update_table) do
- subupdate()
- end
- end
-
-